Conversation
This comment was marked as outdated.
This comment was marked as outdated.
1eabd4f to
51b6826
Compare
|
rebased onto current development |
Inverts values so Damage reduction works as intended
Blogaugis
left a comment
There was a problem hiding this comment.
Don't see any obvious issues.
|
This PR is marked as stale, because it has been open for 7 days with no activity. |
|
Bumping this. It should be ready for the merge. Someone just needs to update it and solve conflicts. |
|
This PR is marked as stale, because it has been open for 7 days with no activity. |
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 8
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
scripts/scr_marine_struct/scr_marine_struct.gml (2)
724-737: Tech-Priest, prevent negative max health for low constitution.
With constitution in the low teens, the multiplier becomes negative, yielding invalid max HP and corrupting healing/HP logic.🛠️ Suggested clamp for constitution scaling
- var max_h = 100 * (1 + ((constitution - 40) * 0.05)); + var con_mult = max(0.25, 1 + ((constitution - 40) * 0.05)); // floor as needed + var max_h = 100 * con_mult; @@ - return max_health() + (increase * (1 + ((constitution - 40) * 0.05))); //calculate the effect of unit_health buffs + var con_mult = max(0.25, 1 + ((constitution - 40) * 0.05)); + return max_health() + (increase * con_mult); //calculate the effect of unit_health buffs
1750-1756: Tech-Priest, pistol/flame “-50%” currently buffs melee.
_melee_mod += 0.5raises output; it contradicts the stated penalty.🔧 Proposed correction to apply a real 50% penalty
- _melee_mod += 0.5; + _melee_mod *= 0.5; if (primary_weapon.has_tag("flame")) { - explanation_string += $"Primary is Flame: -50%#"; + explanation_string += $"Primary is Flame: x0.5#"; } else if (primary_weapon.has_tag("pistol")) { - explanation_string += $"Primary is Pistol: -50%#"; + explanation_string += $"Primary is Pistol: x0.5#"; }scripts/scr_initialize_custom/scr_initialize_custom.gml (1)
1675-1689: Tech-Priest, duplicate “wep2” keys will discard combi options.
The secondwep2overwrites the first, so combi weapons never get offered.🛠️ Merge the two wep2 option arrays
"option": { "wep1": [ [ ["Power Fist", "Chainfist"], 4 ], ], - "wep2": [ - [ - WEAPON_LIST_RANGED_COMBI, 3 - ], - ], - "wep2": [ - [ - WEAPON_LIST_RANGED_HEAVY_TERMINATOR, 1 - ], - ] + "wep2": [ + [ + WEAPON_LIST_RANGED_COMBI, 3 + ], + [ + WEAPON_LIST_RANGED_HEAVY_TERMINATOR, 1 + ] + ] }
🤖 Fix all issues with AI agents
In `@objects/obj_pnunit/Alarm_0.gml`:
- Around line 22-25: If no enemy exists the code currently exits early but
leaves the engaged variable potentially stale; modify the early-exit branch that
checks instance_exists(enemy) so it explicitly sets engaged = false before
calling exit; locate the check using instance_exists(enemy) in Alarm_0
(obj_pnunit) and update that branch to assign engaged = false then exit to
ensure melee/ranged state is reset.
In `@scripts/scr_clean/scr_clean.gml`:
- Around line 174-176: Add a bounds check before indexing the apa array in
damage_infantry: verify _weapon_index is an integer within 0 ..
array_length(apa)-1 and if not use a safe fallback (e.g., set _armour_pierce = 0
or a default value) to avoid "array index out of range" errors; apply the same
guard wherever apa[_weapon_index] is accessed elsewhere in the file (all other
occurrences that mirror damage_infantry's lookup) so out‑of‑range or negative
indices are handled consistently.
In `@scripts/scr_en_weapon/scr_en_weapon.gml`:
- Around line 638-645: In the "Fleshborer" case the line if (obj_ini.preomnor =
1) is assigning rather than comparing and then sets atta to 19 (an unintended
huge reduction); change the condition to a comparison (if (obj_ini.preomnor ==
1)) and update the enhanced attack value from 19 to the correct value from the
balance spreadsheet (e.g., set atta to the intended boosted value such as 90 or
whatever the spreadsheet specifies) while keeping the rest of the case (arp,
rang, break) unchanged.
- Line 685: The conditional uses archaic "or(...)" syntax; replace it with
modern || operators and normal equality checks on obj_ncombat.enemy so the line
reads something like: if (obj_ncombat.enemy >= 10) || (obj_ncombat.enemy == 2)
|| (obj_ncombat.enemy == 5) || (obj_ncombat.enemy == 1) { — update all similar
conditions to use || and consistent spacing around operators (referencing the
obj_ncombat.enemy comparisons in this condition).
- Line 130: Several debug messages call show_debug_message_adv with the
misspelled literal "Unkown weapon name..."—correct all occurrences of the
misspelling to "Unknown" (search for the string "Unkown" inside
scr_en_weapon.gml or calls to show_debug_message_adv that include that text) so
each debug invocation reads "Unknown weapon name: {name}; script:
scr_en_weapon.gml"; update all eight instances accordingly.
- Around line 41-43: The conditionals are using the assignment operator '='
instead of the equality comparator '==' which is ambiguous; update each
conditional that compares values (e.g., the block checking obj_ini.preomnor and
setting atta, and the other occurrences noted: comparisons around lines
referencing obj_ini.preomnor, and the conditions at the other listed spots) to
use '==' for equality checks (e.g., change "if (obj_ini.preomnor = 1)" to "if
(obj_ini.preomnor == 1)") so the code clearly performs comparisons rather than
unintended assignments.
In `@scripts/scr_equipment_struct/scr_equipment_struct.gml`:
- Line 368: Fix the docstring typo for the parameter search_area by replacing
the mismatched quote in the allowed-values list so it reads "any", "weapon",
"gear", "armour", "mobility"; update the comment that documents the search_area
parameter in scr_equipment_struct.gml (the parameter declaration/comment block)
to use consistent double quotes around "gear" to avoid the `"gear'` mismatch.
In `@scripts/scr_marine_struct/scr_marine_struct.gml`:
- Around line 1769-1776: The melee explanation loses the Tech-Priest psychic
bonus because basic_wep_string is created after it is prefixed into
explanation_string; move the creation/assignment of basic_wep_string (the line
var basic_wep_string = $"{primary_weapon.name}: {primary_weapon.attack}#";) to
before you prepend it to explanation_string so the correct weapon string is
included, then update the other similar block around lines 1811-1813 the same
way; ensure you leave the subsequent _melee_mod adjustments and
explanation_string appends (including the _format_sign calls) unchanged in
order.
This PR migrated from here EttyKitty#163.
As per original description:
Intent:
Desired End-state
Changes
Notes
A related PR: #315
A structured doc with all said rebalance changes:
https://docs.google.com/spreadsheets/d/1ZMPRXjmd3tWvFmWiIYb-nQ9qT5PYPiu_75SJNhcYqvg/edit?gid=1993273333#gid=1993273333